In many industries, e.g., the aerospace and automobile industries, manufacturers are increasingly relying on visualization technology to interactively view and inspect the product design in order to catch design problems at an earlier stage. The ability to view whole product structures and conveniently inspect each of its sub-systems is considered essential for any visualization system. Therefore it becomes desirable to be able to render a selected subset of parts as transparent to reveal the design details that are otherwise occluded. Moreover, some parts may be made of transparent material such as glass and to render them transparently can substantially increase the realism of the scene. Therefore, providing realistic object transparency at interactive frame rates is important for effective visualization.
In most modern graphics systems, transparency rendering is realized by a process called “alpha blending.” For correct transparency, the colors of all the polygons contributing a single pixel must be “blended” in back-to-front order. Since the sorting needs be correctly done for each frame, interactive transparency rendering of large models has been a challenging problem.
Previous proposed triangle sort methods can be classified as two types. One is image-based, and the other is object-based. The image space based methods require the availability of special graphics hardware. In these methods, the transparent polygons are rendered layer by layer along the depth in back-to-front order. The rendering of each layer requires a separate rendering pass, and the number of passes required is the maximum depth of the scene. Additional memory buffers are required to blend each pixel color from different passes. The object space based method sorts all the polygons with respect to the current view direction. These sorted polygons are then supplied to the graphics pipeline in back-to-front order for rendering. Most of the methods in this category were proposed to solve the visibility problem before hardware z-buffer was available. Each of these methods has serious limitations that prevent it from being effectively used for rendering large transparent models. For example, depth sort method have computational complexity O(N2), while the BSP (binary space partition) sort method requires expensive construction and in-memory maintenance of a large tree structure. Novel approaches are needed to make it possible to render large transparent models at an interactive rate.
Previous work on BSP tree construction focused on a single factor, i.e., to minimize the number of triangles on the final BSP tree, and did not consider other factors that are equally important in practice. These other factors include the time required to build the BSP tree and the expected time to sort the triangles in the BSP tree. To construct a BSP tree in an efficient manner while satisfying different requirements imposed by different factors, although challenging, is crucial to make this approach more practical.
Previous work on depth sort uses occlusion test algorithm that fails to give precise occlusion relationship between a pair of triangles. As a result, view-dependent triangle split may occur even if two triangles are already in correct order. More sophisticated occlusion test algorithm is needed to avoid such unnecessary triangle splits for better depth sort results.
There is, therefore, a need in the art for a system, method, and computer program product for improved transparency rendering.